home *** CD-ROM | disk | FTP | other *** search
/ NeXTSTEP 3.1 [x86] / NeXT Step 3.1 Intel.cdr.dmg / private / etc / rc.cdrom.m68k < prev    next >
Text File  |  1993-02-07  |  16KB  |  424 lines

  1. #!/bin/sh -u
  2. #
  3. # CD-ROM Software Installation Procedure
  4. #
  5. # Copyright (C) 1992 by NeXT Computer, Inc.  All rights reserved.
  6. #
  7. # This script is invoked automatically when booted from a CD-ROM.
  8. # Trying to run it directly will probably not do what you expect.
  9.  
  10. HOME=/; export HOME
  11. PATH=/etc:/usr/etc:/bin:/usr/bin:/usr/ucb; export PATH
  12.  
  13. (
  14. # Exit with status 1 if we get a SIGINT (from, e.g., a ^C being typed).
  15. trap "exit 1" 2
  16.  
  17. # Check to be sure we're running from a CD-ROM
  18.  
  19. if [ ! -d /NextCD ]; then 
  20.     echo
  21.     echo "This script is used to install the system software onto a hard"
  22.     echo "disk while booted from a CD-ROM.  Since you aren't running from"
  23.     echo "a CD-ROM, don't run this script."
  24.     echo
  25.     exit 1
  26. fi
  27.  
  28. echo
  29. echo "NeXTSTEP Release 3 Installation"
  30. echo
  31. echo "This procedure installs the Release 3 essentials onto your hard"
  32. echo "disk.  If you just want to use the CD-ROM as a startup device, use"
  33. echo "the -s flag from the console to start up in single-user mode."
  34. echo
  35. echo "If you would like to install documentation or other system extensions,"
  36. echo "use the packages in /NextCD/Packages once this procedure is complete."
  37. echo
  38. echo "You can cancel this procedure by typing Control-c.  If you continue,"
  39. echo "there are a few more questions to answer before any changes are made."
  40. echo
  41. echo "La procedure suivante va installer la version 3 sur votre disque. Nous"
  42. echo "attirons votre attention sur le fait qu'il s'agit bien d'une"
  43. echo "installation complete et non d'une mise a jour. Si vous desirez"
  44. echo "proceder a l'installation de cette version, actionnez la touche 'y'"
  45. echo "(oui), ou 'n' (non) dans le cas contraire, et appuyez sur Return."
  46. echo ""
  47. echo "Diese Prozedur installiert Version 3 auf Ihrer Platte. Es handelt sich"
  48. echo "nicht um einen Upgrade, sondern um eine vollig neue Installation."
  49. echo "Mochten Sie diese Prozedur ausfuhren? Duecken Sie 'y' fur "Ja" oder"
  50. echo "'n' fur "Nein" und anschliessen die Return-Taste."
  51. echo
  52. echo "Questa procedura installa la Versione 3 su disco. Non si tratta di un"
  53. echo "aggiornamento, ma di un'installazione completa. E questa l'operazione"
  54. echo "che vuoi eseguire? Premi 'y' per si e 'n' per no, quindi premi Invio."
  55. echo
  56. echo "Este procedimiento instala la version actualizada 3 en el disco. Es"
  57. echo "una instalacion en si, no una actualizacion. Es esto lo que desea"
  58. echo "hacer? Pulse 'y' para si o 'n' para no y, a continuacion, Intro."
  59. echo
  60. echo "Denna procedur installerar Version 3 pa din disk. Detta ar inte en"
  61. echo "uppgradering utan en helt ny installation.  Vill du utfora denna"
  62. echo "installation?  Tryck pa 'y' for ja eller 'n' for nej och tryck"
  63. echo "darefter pa Retur."
  64. echo 
  65. echo "THIS IS NOT AN UPGRADE.  IT IS A COMPLETE INSTALLATION FROM SCRATCH."
  66. echo
  67. fbshow -S -B -E -I "This procedure will  install*Release 3 on your disk.*Is that what you want?**Press \`y' or \`n', then Return." 
  68. resp=
  69. while [ ${resp}x = x ]; do
  70.     echo -n "Is this what you want? (y/n): "
  71.     read resp
  72.     if [ ${resp}x != yx -a ${resp}x != nx ]; then
  73.     resp=
  74.     fi
  75. done
  76. if [ ${resp}x != yx ]; then
  77.     echo
  78.     echo -n "Ok, shutting down..."
  79.     fbshow -S -B -E -I "Shutting down..." 
  80.     halt -e
  81.     exit 1
  82. fi
  83.  
  84. fbshow -S -B -E -I "On which disk should the*software be installed? The*default is \`sd0a'.**Type name, press Return." 
  85. echo
  86. echo "Sur quel disque desirez vous installer la version? Le disque selectionne par defaut est sd0a."
  87. echo "Auf welcher Platte soll die Software installiert werden? Die Voreinstellung ist sd0a."
  88. echo "Su quale disco deve essere installato il software? Quello predefinito e sd0a."
  89. echo "En que disco deberia instalarse el software? El valor por defecto es sd0a."
  90. echo "Pa vilken disk ska mjukvaran installeras? Forinstallningen ar sd0a."
  91. echo
  92. diskie=
  93. while [ ${diskie}x = x ]; do
  94.     echo -n "On which disk should the software be installed? (default = sd0a): "
  95.     read diskie
  96.     if [ ${diskie}x = x ]; then
  97.     diskie=sd0a
  98.     fi
  99.     if [ ! -b /dev/${diskie} ]; then
  100.     echo "That doesn't seem to be a valid disk; the file /dev/${diskie} doesn't exist."
  101.     diskie=
  102.     fi
  103. done
  104.  
  105. echo
  106. echo "If you are already running Release 3, you don't need to erase your"
  107. echo "disk before re-installing the software (however, the directory /private"
  108. echo "WILL BE DELETED whether you erase the disk or not.)"
  109. echo
  110. echo "Voulez-vous initialiser (tout effacer) le disque avant de proceder a l'installation du logiciel?"
  111. echo "Mochten Sie die Platte formatieren (loschen), bevor Sie die Software installieren?"
  112. echo "Vuoi inizializzare (cancellare) il disco prima di installare il software?"
  113. echo "Desea inicializar (borrar) el disco antes de instalar el software?"
  114. echo "Vill du formatera (radera) disken innan du installerar mjukvaran?"
  115. echo
  116. fbshow -S -B -E -I "Do you want to initialize*(erase) the disk before*installing the software?**Press\`y' or \`n', then Return." 
  117. doinit=
  118. while [ ${doinit}x = x ]; do
  119.     echo -n "Initialize (erase) disk before installing software? (y/n): "
  120.     read doinit
  121.     if [ ${doinit}x != yx -a ${doinit}x != nx ]; then
  122.     doinit=
  123.     fi
  124. done
  125.  
  126. echo
  127. echo "Ready to perform the installation."
  128. echo "Pret pour l'installation. Desirez-vous lancer l'operation?"
  129. echo "Die Installation kann jetzt durchgefuhrt werden. Wirklich durchfuhren?"
  130. echo "Sono pronto a iniziare l'installazione. Vuoi veramente continuare?"
  131. echo "Preparado para la instalacion. Realmente desea hacerlo?"
  132. echo "Klart att installera mjukvaran.  Vill du gora detta?"
  133. echo
  134. fbshow -S -B -E -I "Ready to install the system*software. Really do it?**Press \`y' or \`n', then Return." 
  135. resp=
  136. while [ ${resp}x = x ]; do
  137.     echo -n "Really do it? (y/n): "
  138.     read resp
  139.     if [ ${resp}x != yx -a ${resp}x != nx ]; then
  140.     resp=
  141.     fi
  142. done
  143.  
  144. if [ ${resp}x != yx ]; then
  145.     echo
  146.     echo -n "Ok, shutting down..."
  147.     fbshow -S -B -E -I "Shutting down..." 
  148.     halt -e
  149.     exit 1
  150. fi
  151.  
  152. # If not re-initializing hard disk, remove /private from it.
  153.  
  154. if [ ${doinit}x = nx ]; then  
  155.  
  156.     echo
  157.     echo "Mounting hard disk..."
  158.     fbshow -S -B -E -I "Mounting hard disk..."
  159.     # We mount -n and avoid writing /etc/mtab because the root
  160.     # device is read-only (it's a CD-ROM...).
  161.     /etc/mount -n /dev/${diskie} /private/tmp
  162.     
  163.     # Mounted OK?  Report if not.
  164.     
  165.     if [ $? -ne 0 ]; then 
  166.     echo 
  167.     echo "The hard disk is damaged, and the software can't be installed"
  168.     echo "without initializing.  Do you want to continue?"
  169.     echo
  170.     echo "Le disque dur est endommage et doit etre initialise. Voulez-vous poursuivre l'operation?"
  171.     echo "Die Festplatte ist beschadigt und muss formatiert werden. Trotzdem fortsetzen?"
  172.     echo "Il disco fisso e danneggiato e deve essere inizializzato. Vuoi continuare comunque?"
  173.     echo "El disco duro esta danado y debe ser inicializado. Continuar de todas formas?"
  174.     echo "Harddisken ar skadad och maste formateras.  Vill du fortsatta anda?"
  175.     echo
  176.     echo -n "Initialize the hard disk? (y/n): "
  177.     fbshow -S -B -E -I -s 5 -f Helvetica-BoldOblique \
  178.         "Hard disk is damaged!" -f Helvetica \
  179.         "Can't continue without*initializing hard disk.*Ok to initialize it?*Press \`y' or \`n', then Return."
  180.     read resp
  181.  
  182.     if [ ${resp}x = yx ]; then
  183.         doinit=y
  184.     else
  185.         (echo) > /dev/console
  186.         (echo "Load of hard disk aborted; halting...") > /dev/console
  187.         fbshow -S -B -E -I "Load aborted, halting..."
  188.         halt -e
  189.         exit 1
  190.     fi
  191.     else
  192.     if [ -f /private/tmp/usr/lib/NextStep/software_version ]; then
  193.         sourcevers=`head -1 /private/tmp/usr/lib/NextStep/software_version`
  194.     else
  195.         sourcevers="2.0"
  196.     fi
  197.     if [ "${sourcevers}x" = "3.1x" ]; then
  198.         (echo "Removing /private...") > /dev/console
  199.         fbshow -S -B -E -I "Removing /private..."
  200.         /bin/rm -rf /private/tmp/private
  201.     else
  202.         echo
  203.         echo "The disk you've selected does not contain Release 3.1.  You can only install the"
  204.         echo "software without erasing the disk when Release 3.1 has been previously installed."
  205.         echo
  206.         echo "Le disque selectionne ne contient pas la version 3.1. Si vous desirez installer"
  207.         echo "le logiciel sans risquer de perdre toutes les donnees sur le disque, vous devez"
  208.         echo "d'abord installer la version 3.1."
  209.         echo
  210.         echo "Die ausgewahlte Platte enthalt nicht Release 3.1. Sie konnen die Software nur"
  211.         echo "installieren, wenn Release 3.1 bereits vorher installiert wurde. Ansonsten wird"
  212.         echo "die Platte  dabei geloscht."
  213.         echo
  214.         echo "Il disco selezionato non contiene la Versione 3.1. Puoi installare il software"
  215.         echo "senza cancellare il contenuto del disco quando la Versione 3.1 e stata installata"
  216.         echo "precedentemente."
  217.         echo
  218.         echo "El disco que ha seleccionado no contiene la version actualizada 3.1. Solamente se"
  219.         echo "puede instalar el software sin borrar el disco cuando se haya instalado previamente"
  220.         echo "la version actualizada 3.1."
  221.         echo
  222.         echo "Den disk du har valt innehaller inte version 3.1.  Du kan bara installera programvaran"
  223.         echo "utan att radera disken om version 3.1 har installerats tidigare."
  224.         echo
  225.         echo -n "Press Return to shut down: "
  226.         read glop
  227.         sync
  228.         halt
  229.         exit 1
  230.     fi
  231.     fi
  232. fi
  233.  
  234. (echo) > /dev/console
  235.  
  236. rootsize=0
  237.  
  238. # scsimodes -C tells you how big a disk is, in megabytes
  239. disksize=`/usr/etc/scsimodes -C /dev/r${diskie}`
  240. # readlabel -n tells you how many partitions are on a disk, default = 1
  241. numpart=`/NextCD/CDIS/readlabel -n /dev/r${diskie}`
  242.  
  243. if [ $? -ne 0 ]; then
  244.     numpart=1
  245. else 
  246.     rootsize=`/NextCD/CDIS/readlabel -p /dev/r${diskie}`
  247.     # Default to 1 partition if can't determine size of A partition.
  248.     if [ $? -ne 0 ]
  249.     then 
  250.     numpart=1
  251.     (echo "Cannot read root partition size from label...") > /dev/console
  252.     (echo "Treating disk as a single partition.") > /dev/console
  253.     fi
  254. fi
  255.  
  256. # If we're re-initializing the disk, take care of partitioning.
  257.  
  258. if [ ${doinit}x = yx ]; then
  259.     if [ $disksize -gt 500 -a $numpart -eq 2 -a $rootsize -ne 0 ]; then 
  260.     (( 
  261.         echo "Your disk was previously built with two partitions.  Unless"
  262.         echo "this computer supports NetBoot clients, it's probably better"
  263.         echo "to have only one partition. You can choose to rebuild the"
  264.         echo "disk in its current configuration, or to rebuild it with a"
  265.         echo "single partition."
  266.         echo 
  267.         echo "Votre disque est divise en deux partitions. Desirez-vous creer une seule partition?"
  268.         echo "Ihre Platte hat zwei Partitionen. Mochten Sie sie in eine Partition umwandeln?"
  269.         echo "Il tuo disco ha due partizioni; vuoi unificarle?"
  270.         echo "El disco tiene dos particiones. Crear solo una?"
  271.         echo "Din disk har tva partitioner.  Vill du konvertera dessa till en partition?"
  272.         echo
  273.         echo -n "Initialize the disk with one partition? (y/n): "
  274.         fbshow -S -B -E -I "Your disk now has two*partitions. One is preferred.**Build it with one partition?*Press \`y' or \`n', then Return."
  275.         read resp
  276.         echo
  277.         if [ ${resp}x = nx ]; then
  278.         exit 1
  279.         else
  280.         exit 0
  281.         fi
  282.     ) < /dev/console > /dev/console 2>&1 )
  283.     
  284.     if [ $? -eq 0 ]; then 
  285.         numpart=1; 
  286.     fi
  287.     else
  288.     # Support only one partition if disk is 500MB or less.
  289.         numpart=1
  290.     fi
  291.     
  292.     (echo "Initializing hard disk...") > /dev/console
  293.     fbshow -S -B -E -I "Initializing hard disk..."
  294.  
  295.     # Get off the disk before we initialize it!
  296.     cd /NextCD
  297.     
  298.     if [ $numpart -eq 2 ]; then
  299.     (/usr/etc/disk -i -p $rootsize /dev/r${diskie}) > /dev/console 2>&1
  300.     else 
  301.     (/usr/etc/disk -i /dev/r${diskie}) > /dev/console 2>&1
  302.     fi
  303.     
  304.     if [ $? -ne 0 ]; then
  305.     (
  306.         (
  307.         fbshow -S -B -E -s 4 -I -f Helvetica-BoldOblique \
  308.             "Installation failed!" -f Helvetica \
  309.             "*Couldn't initialize disk.*Press Return to halt."
  310.         echo ""
  311.         echo "INSTALLATION FAILED - COULD NOT INTIALIZE DISK"
  312.         echo "L'INSTALLATION A ECHOUE - L'INITIALISATION DU DISQUE N'A PAS ABOUTI"
  313.         echo "INSTALLATION FEHLGESCHLAGEN - PLATTE KONNTE NICHT FORMATIERT WERDEN"
  314.         echo "INSTALLAZIONE NON RIUSCITA - NON SONO RIUSCITO A INIZIALIZZARE IL DISCO"
  315.         echo "LA INSTALACION HA FALLADO - IMPOSIBLE INICIALIZAR EL DISCO"
  316.         echo "INSTALLATIONEN MISSLYCKADES - DISKEN KUNDE INTE FORMATERAS"
  317.         echo
  318.         echo -n "Press Return to shut down: "
  319.         read glop
  320.         sync
  321.         halt -p
  322.         exit 1
  323.         ) < /dev/console > /dev/console 2>&1)
  324.     fi
  325.     
  326.     mount -n /dev/${diskie} /private/tmp
  327.     echo
  328. fi
  329.     
  330. (echo "Installing software...") >/dev/console
  331. fbshow -S -B -E -I "Installing software..."
  332.  
  333. # First, write the boot block.
  334. disk -b /dev/r${diskie} > /dev/null &>/dev/console
  335.  
  336. # Next, install the files.  
  337.  
  338. cd /private/tmp
  339. (/NextCD/CDIS/bomcopy /usr/lib/NextStep/BaseSystem.bom / /private/tmp \
  340.     > /dev/console 2>&1)
  341.  
  342. if [ $? -ne 0 ]; then
  343.     (
  344.     (
  345.         fbshow -S -B -E -s 4 -I -f Helvetica-BoldOblique \
  346.         "Installation failed!" -f Helvetica \
  347.         "*Not enough disk space.*Press Return to halt."
  348.         echo ""
  349.         echo "INSTALLATION FAILED - PERHAPS NOT ENOUGH DISK SPACE"
  350.         echo "L'INSTALLATION A ECHOUE - L'ESPACE DISQUE EST PEUT-ETRE INSUFFISANT"
  351.         echo "INSTALLATION FEHLGESCHLAGEN - EVENTUELL NICHT GENUG PLATTENSPEICHER"
  352.         echo "INSTALLAZIONE NON RIUSCITA - FORSE LO SPAZIO SU DISCO E INSUFFICIENTE"
  353.         echo "LA INSTALACION HA FALLADO - PUEDE QUE NO HAYA ESPACIO SUFICIENTE EN EL DISCO"
  354.         echo "INSTALLATIONEN MISSLYCKADES - DISKUTRYMMET KANSKE AR OTILLRACKLIGT"
  355.         echo " "
  356.         echo "You will have to REPEAT the installation procedure.  You can"
  357.         echo "either boot single user and remove some files from the hard"
  358.         echo "disk first, or ask that the disk be initialized before the"
  359.         echo "software is installed."
  360.         echo " "
  361.         echo -n "Press Return to shut down: "
  362.         read glop
  363.         sync
  364.         halt -p
  365.         exit 1
  366.     ) < /dev/console > /dev/console 2>&1)
  367. fi
  368.  
  369. # If the disk was partitioned, patch over fstab to include /clients
  370.  
  371. if [ $numpart -eq 2 ]; then
  372.     (echo "Installing two-partition /etc/fstab...") >/dev/console
  373.     fbshow -S -B -E -I "Installing /etc/fstab file..."
  374.     cp -p /private/etc/fstab.sd660 /private/tmp/private/etc/fstab
  375. fi
  376.  
  377. if [ -d /Upgrade_3.1.app/Default.upgrade/Languages ]; then
  378.     (echo "Checking sizes for languages...") > /dev/console
  379.     freekbytes=`/NextCD/CDIS/freespace /dev/r${diskie}`
  380.     langkbytes=`du -s /Upgrade_3.1.app/Default.upgrade/Languages | awk '{print $1}'`
  381.     (echo "Languages require ${langkbytes}K, and ${freekbytes}K are available.") > /dev/console
  382.     if [ $freekbytes -gt `expr $langkbytes + 1000` ]; then
  383.         (echo "Installing languages...") > /dev/console
  384.     mkdirs /private/tmp/NextLibrary/Receipts
  385.     cd /Upgrade_3.1.app/Default.upgrade/Languages
  386.     tar cf - *.pkg | (cd /private/tmp/NextLibrary/Receipts; tar xfp -)
  387.     else
  388.         (echo "There isn't enough space to install all the languages.") > /dev/console
  389.     (echo "Checking sizes for English help...") > /dev/console
  390.     langkbytes=`du -s /Upgrade_3.1.app/Default.upgrade/Languages/English.pkg | awk '{print $1}'`
  391.     (echo "English help requires ${langkbytes}K, and ${freekbytes}K are available.") > /dev/console
  392.     if [ $freekbytes -gt `expr $langkbytes + 1000` ]; then
  393.         (echo "Installing English help...") > /dev/console
  394.         mkdirs /private/tmp/NextLibrary/Receipts
  395.         cd /Upgrade_3.1.app/Default.upgrade/Languages
  396.         tar cf - English.pkg | (cd /private/tmp/NextLibrary/Receipts; tar xfp -)
  397.     else
  398.         (echo "There isn't enough space to install English help.") > /dev/console
  399.     fi
  400.     fi
  401. fi
  402.  
  403. ((
  404.     fbshow -S -B -E -s 3 -I -f Helvetica-BoldOblique \
  405.         "Installation complete!" -f Helvetica \
  406.         "*Press Return to restart."
  407.     echo ""
  408.     echo "INSTALLATION COMPLETE!"
  409.     echo
  410.     echo "INSTALLATION TERMINEE! Appuyez sur Return pour relancer le systeme.   "
  411.     echo "INSTALLATION FERTIG! Duecken Sie die Return-Taste, um neu zu starten."
  412.     echo "INSTALLAZIONE COMPLETA! Premi Invio per riavviare."
  413.     echo "INSTALACION TERMINADA! Pulse Intro para arrancar."
  414.     echo "INSTALLATIONEN KLAR!  Tryck pa Retur for att starta om."
  415.     echo
  416.     echo -n "Press Return to restart from the hard disk: "
  417.     read glop
  418.     sync ; reboot sd
  419.     exit 1
  420. ) < /dev/console > /dev/console 2>&1)
  421. ) < /dev/console > /dev/console 2>&1
  422. exit 0
  423.  
  424.